package com.ruixi.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
//@RequestMapping("/mvc") //@RequestMapping可以加在类上,也可以加在方法上,若类和方法上都加有,应该一层一层的访问,先访问类,在访问类中的方法
public class TestController {

    /*
	 * @RequestMapping:设置请求映射,把请求和控制层中的方法设置映射关系
	 * 当请求路径和@RequestMapping的value属性值一致时,则该注解所标注的方法即为处理请求的方法
	 *
	 * @RequestMapping可以加在类上,也可以加在方法上,若类和方法上都加有,应该一层一层的访问,先访问类,在访问类中的方法
	 *
	 *	 method:用来设置请求方式,只有客户端发送请求的方式和method的值一致,才能处理请求
	 * 		常用的请求方式:
	 * 			GET  	查询
	 * 			POST 	新增
	 * 			PUT  	编辑
	 * 			DELETE  删除
	 *		作用:
	 * 			在需要的情况下,同一个请求路径可以写出四种操作(增删改查),如下面的例子,可以根据请求方式的不同,调用不同的方法
	 *
	 * 	 params:用来设置客户端传到服务器的数据,支持表达式,如:username !username username=admin username!=admin
	 *
	 * 	 headers:用来设置请求头信息,所发送的请求的请求头信息一定要和headers属性中所设置的一致,是一种约束条件
	 * 		例如:Host=localhost:8080  注意中间使用等于号,表示该请求头等于的值
	 */
    @RequestMapping(value = "/test",method = RequestMethod.POST)
    public String testPost(){
        System.out.println("SUCCESS:POST");
        return "success";
    }

    /*
    	params = {"username","!age"}意思为请求必须包含username这个参数,且不能有age这个参数,如果请求不符合,则不能调用该方法
    		http://localhost:8080/part2_SpringMVC_war_exploded/test 						不能识别
			http://localhost:8080/part2_SpringMVC_war_exploded/test?username=admin 			能够识别
			http://localhost:8080/part2_SpringMVC_war_exploded/test/username=admin&age=12  不能识别

		params = {"username","age！=12"}意思为请求必须包含username这个参数,且age不能等于12,如果请求不符合,则不能调用该方法
     */
	@RequestMapping(value = "/test",method = RequestMethod.GET,params = {"!username","!age"},headers = {"Host=localhost:8080"})
	public String testGet(){
		System.out.println("SUCCESS:GET");
		return "success";
	}

	/**
	 * springMVC支持Ant方式的请求路径,在Ant中,有3种匹配符
	 * 	*:任意字符
	 * 	?:任意一个字符
	 * 	**:任意多层目录
	 */
	@RequestMapping(value = "/?/testAnt")
	public String testAnt(){
		System.out.println("SUCCESS:testAnt");
		return "success";
	}

	/**
	 * 以前:localhost:8080/springMVC02/testREST?id=1001&username=admin
	 * 现在:localhost:8080/springMVC02/testREST/1001/admin
	 */
	@RequestMapping(value = "/testRest/{id}/{name}")
	public String testRest(@PathVariable("id")Integer id,@PathVariable("name")String name){
		System.out.println("id:" + id + ",name:" + name);
		return "success";
	}

}
